﻿using System.Windows.Controls;

namespace Songhay.Silverlight.Mvvm
{
    /// <summary>
    /// Defines a <see cref="System.Windows.Controls.Frame"/>
    /// used in a conventional Composition Messaging design pattern.
    /// </summary>
    public interface INavigationFrame
    {
        /// <summary>
        /// Gets or sets a value indicating whether this instance is navigating.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is navigating; otherwise, <c>false</c>.
        /// </value>
        /// <remarks>
        /// A conventional Composition Messaging design pattern would use this member
        /// to prevent blocking an asynchronous navigation operation.
        /// </remarks>
        bool IsNavigating { get; }

        /// <summary>
        /// Gets or sets the navigation frame.
        /// </summary>
        /// <value>The navigation frame.</value>
        /// <remarks>
        /// A conventional Composition Messaging design pattern would use this member
        /// to set the <see cref="System.Windows.Controls.Frame.ContentLoader"/> property
        /// with an object implementing <see cref="System.Windows.Navigation.INavigationContentLoader"/>.
        /// </remarks>
        Frame NavigationFrame { get; }
    }
}
